package org.jason.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.jason.model.article.dtos.ExamineDto;
import org.jason.model.interaction.dtos.ArticleInteractionDto;
import org.jason.model.article.dtos.ContributeDto;
import org.jason.model.article.dtos.GetArticlesDto;
import org.jason.model.article.es.ArticleContent;
import org.jason.model.article.pojos.CaArticle;
import org.jason.model.common.dtos.ResponseResult;

import java.util.List;

/**
 * <p>
 * 文章详情表 服务类
 * </p>
 *
 * @author jason
 * @since 2023-07-23
 */
public interface ICaArticleService extends IService<CaArticle> {

    /**
     * 获取文章 默认取推荐的10条数据
     *
     * @param dto
     * @return
     */
    ResponseResult getArticles(GetArticlesDto dto);

    /**
     * 投稿文章
     *
     * @param dto
     * @return
     */
    ResponseResult contribute(ContributeDto dto);

    /**
     * 根据id获取文章内容
     *
     * @param articleId
     * @return
     */
    ResponseResult<ArticleContent> getArticleContent(Integer articleId);

    /**
     * 根据id获取文章
     *
     * @param id
     * @return
     */
    ResponseResult getArticleById(Integer id);

    /**
     * 文章互动 cancel为true时为取消互动
     *
     * @param dto
     */
    void interaction(ArticleInteractionDto dto, Boolean cancel);

    /**
     * 保存文章
     *
     * @param dto
     */
    void saveArticle(ContributeDto dto);

    /**
     * 根据用户id获取文章列表
     *
     * @param userId
     * @return
     */
    ResponseResult<List<CaArticle>> getArticlesByUserId(Integer userId);

    /**
     * 获取待审核文章列表
     * @return 待审核文章列表
     */
    ResponseResult<List<CaArticle>> getToBeExamineArticle();

    /**
     * 审核文章
     * @param dto 审核文章参数
     * @return 结果
     */
    ResponseResult examineArticle(ExamineDto dto);
}
